﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using CondominioG1.Negocio;
using CondominioG1.Dominio;

namespace CondominioG1.Controllers
{
    public class CuotaController : Controller
    {
        //Dependencias (en formato de propiedad)
        public CuotaService CuotaService { get; set; }
        public ViviendaService ViviendaService { get; set; }
        public UsuarioService UsuarioService { get; set; }      
               
        public ActionResult Index()
        {
            ICollection<Cuota> modelo = CuotaService.ListarTodasCuotas();
            return View(modelo); 
        }
        
        public ActionResult Listar()
        {
            ICollection<Cuota> modelo = CuotaService.ListaCuotasPorPagar();
            return View(modelo);
        }

        public ActionResult Morosos()
        {
            ICollection<Cuota> modelo = CuotaService.ConsultarMorosos();
            return View(modelo);
        }


        public ActionResult Details(int Numero)
        {
            Cuota modelo = CuotaService.ObtenerCuota(Numero);
            return View(modelo); 
        }


        // GET: /
        public ActionResult Create()
        {
            return View(); 
        }

        // POST: 
        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    CuotaService.FijarCuota((String)collection["Vivienda"],
                                            (String)collection["Periodo"],
                                            decimal.Parse(collection["Importe"]),
                                            DateTime.Parse(collection["Vencimiento"]),
                                             false,
                                            DateTime.Parse("01/01/1999"),
                                            "");
                    
                    return RedirectToAction("Index");
                }
                else
                {
                    return View();
                }
            }
            catch (Exception e)
            {
                ModelState.AddModelError(String.Empty, "Error al fijar la cuota: " + e.Message);
                return View();
            }
        }

        // GET: /
        public ActionResult Edit(Int32 Numero)
        {
            Cuota modelo = CuotaService.ObtenerCuota(Numero);
            return View(modelo);
        }

        // POST: / Pagar la cuota.
        [HttpPost]
        public ActionResult Edit(Int32 Numero, FormCollection collection)
        {
            try
            {
                CuotaService.PagarCuota((String)collection["Vivienda.Codigo"],
                                        (String)collection["Periodo"],
                                        (String)collection["ctl00$MainContent$cmbTipo"] );
                
                return RedirectToAction("Index");           
            }
            catch (Exception e)
            {
                ModelState.AddModelError(String.Empty, "Error al pagar la cuota: " + e.Message);
                return View();
            }
        }

        // GET: /
        public ActionResult Delete(Int32 Numero)
        {
            Cuota modelo = CuotaService.ObtenerCuota(Numero);
            return View(modelo);
        }

        // POST: /
        [HttpPost]
        public ActionResult Delete(Int32 Numero, FormCollection collection)
        {
            try
            {
                Cuota cuotaAEliminar = CuotaService.ObtenerCuota(Numero);
                CuotaService.EliminarCuota(cuotaAEliminar);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}



//Cuota cuotaACrear = new Cuota();
//cuotaACrear.Vivienda = new Vivienda();

//cuotaACrear.Vivienda.Codigo = (String)collection["Vivienda"];     //ViviendaDAO.Obtener(viviendaCodigo);
//cuotaACrear.Periodo = (String)collection["Periodo"];
//cuotaACrear.Importe = decimal.Parse(collection["Importe"]);
//cuotaACrear.Vencimiento = DateTime.Parse(collection["Vencimiento"]);
//cuotaACrear.Estado = bool.Parse(collection["Estado"]);
//cuotaACrear.FecPago = DateTime.Parse(collection["FecPago"]);
//cuotaACrear.FormaPago = (String)collection["FormaPago"];
//CuotaService.CrearCuota(cuotaACrear);

//bool.Parse(collection["Estado"]),
//DateTime.Parse(collection["FecPago"]),
//(String)collection["FormaPago"]);

//Cuota cuotaAModificar = CuotaService.ObtenerCuota(Numero);
//cuotaAModificar.Vivienda.Codigo = (String)collection["Vivienda"];
//cuotaAModificar.Periodo = (String)collection["Periodo"];
//cuotaAModificar.Importe = decimal.Parse(collection["Importe"]);
//cuotaAModificar.Vencimiento = DateTime.Parse(collection["Vencimiento"]);
//cuotaAModificar.Estado = bool.Parse(collection["Estado"]);
//cuotaAModificar.FecPago = DateTime.Parse(collection["FecPago"]);
//cuotaAModificar.FormaPago = (String)collection["FormaPago"];
//CuotaService.ModificarCuota(cuotaAModificar);


